package day2.LC203;

import jdk.jfr.DataAmount;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

public class Main {
    public static void main(String[] args) {

    }
}


//Definition for singly-linked list.
@Data
//@AllArgsConstructor
//@NoArgsConstructor
class ListNode {
    int val;
    ListNode next;
    ListNode() {}
    ListNode(int val) { this.val = val; }
    ListNode(int val, ListNode next) { this.val = val; this.next = next; }
}
class Solution {
    public ListNode removeElements(ListNode head, int val) {
        //法一：直接求解
//        ListNode temp = null;
//        temp=head;
//        //先检查第一个节点
//        while (temp != null && temp.val == val) {
//            head=head.next;
//            temp=head;
//        }
//        if (head==null) {
//            return head;
//        }
//        temp=head.next;
//        ListNode pre=head;
//        while (temp != null) {
//            if (temp.val == val) {
//                pre.next=temp.next;
//                temp=pre.next;
//            }else {
//                pre=pre.next;
//                temp=temp.next;
//            }
//        }
//        return head;

        //法二：增加一个虚拟头节点
        ListNode listNode = new ListNode();
        listNode.next=head;
        ListNode pre=listNode;
        ListNode temp=head;
        while (temp != null) {
            if (temp.val == val) {
                pre.next=temp.next;
                temp=temp.next;
            }else {
                pre=pre.next;
                temp=temp.next;
            }
        }
        return listNode.next;
    }
}
